package com.cskaoyan.javase.array._4operation._1get;

/**
 * 获取数组中的最值，包括获取最大值和最小值，也是常见操作。
 * 具体思路：
 * 任取一个元素（一般选择第一个元素）作为参照物。
 * 遍历其他元素，依次比较，选择出更大/小的值，类似于打擂台。
 * 最终获取最值。
 *
 * 这是一种暴力求解的方式,利用了计算机强大的计算能力.
 *
 * @since 16:02
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        int[] arr = {1, 2, 12, 31, 2, 3, 123, 666, 12, 3, 14, 2, 3, 12, 3, 12, 3};
        System.out.println(getMaxValueIntArray(arr));
        System.out.println(getMinValueIntArray(arr));
    }

    // 求int数组的最大值
    public static int getMaxValueIntArray(int[] target) {
        // 1.假设第一个元素就是最大值
        int max = target[0];
        // 2.遍历数组元素,逐一比较,如果比假设的最大值还大,成为新的最大值
        for (int ele : target) {
            if (ele > max) {
                max = ele;
            }
        }
        // 3.遍历完数组,就找到了所有元素的最大值
        return max;
    }

    // 求int数组的最小值
    public static int getMinValueIntArray(int[] target) {
        // 1.假设第一个元素就是最小值
        int min = target[0];
        // 2.遍历数组元素,逐一比较,如果比假设的最小值还小,成为新的最小值
        for (int i = 1; i < target.length; i++) {
            if (target[i] < min) {
                min = target[i];
            }
        }
        // 3.遍历完数组,就找到了所有元素的最小值
        return min;
    }
}
